10 PRINT"[147]":POKE 53280,5:POKE 53281,0 20 IF PEEK(49152)<>76 THEN LOAD "HIRES",8,1 97 : 98 REM INITIALIZE VARIABLES 99 : 100 HIRES=12*4096:DRAW=HI+3:PLOT=DR+3:MOVE=PL+3:CLSCR=MO+3:DMODE=CL+3 110 SELPC=DM+3:COLOUR=SE+3:BOX=CO+3:TEXT=BO+3:PRNT=TE+3:CHSET=PR+3:TRAP=CH+3 120 GOTO 1000 197 : 198 REM PLOT THE GRAPH 199 : 200 X=X+DX:IF X>XAX THEN 500 210 SYS TRAP,400 : REM CATCH ANY ERRORS IN FUNCTION CALCULATIONS 220 Y=SIN(2*X) + COS(3*X) : REM INSERT FUNCTION TO BE GRAPHED HERE 230 SYS TRAP,450 : REM NOW CATCH ANY PLOTTING ERRORS 240 XP=(X-XIN)*SX : REM X-COORDINATE FOR PLOT 250 YP=(Y-YIN)*SY : REM Y-COORDINATE FOR PLOT 260 ON PF GOTO 290,310 267 : 268 REM LAST POINT WAS PLOTTED OK, SO DRAW FROM LAST POINT TO CURRENT POINT 269 : 270 SYS DRAW,XP,YP 280 GOTO 200 287 : 288 REM LAST POINT WAS OUT OF RANGE, SO DRAW FROM BOUNDARY TO CURRENT POINT 289 : 290 SYS DRAW,XP,BOUNDARY TO XP,YP 300 PF=0:GOTO 200 307 : 308 REM LAST POINT WAS NOT DEFINED, SO JUST PLOT THE CURRENT POINT 309 : 310 SYS PLOT,XP,YP 320 PF=0:GOTO 200 397 : 398 REM SOMETHING WENT WRONG WITH THE FUNCTION 399 : 400 ERR=PEEK(781):PF=2 410 IF ERR=14 THEN 200 : REM ILLEGAL QUANTITY ERROR 420 IF ERR=20 THEN 200 : REM DIVISION BY ZERO ERROR 430 IF ERR=16 THEN 200 : REM OVERFLOW ERROR 440 IF ERR=11 THEN SYS PRNT,3,23,"SYNTAX ERROR IN FUNCTION DEFINITION":GOTO 510 445 SYS PRNT,4,23,"OOPS! I FORGOT ABOUT ERROR #"+STR$(ERR):GOTO 510 446 : 447 REM TRIED TO PLOT OUT OF RANGE. X-COORD. SHOULD BE O.K. 448 REM THEREFORE, JUST TEST THE Y-COORD. 449 : 450 ERR=PEEK(781):IF ERR<>14 THEN 445 460 IF YP>199 THEN BOUNDARY=199 : REM POINT IS ABOVE TOP OF SCREEN 470 IF YP<0 THEN BOUNDARY=0 : REM POINT IS BELOW BOTTOM OF SCREEN 480 IF PF=0 THEN SYS DRAW,XP-DX,BOUNDARY 490 PF=1:GOTO 200 497 : 498 REM END BY PRESSING 499 : 500 SYS PRNT,13,23,"GRAPH COMPLETED" 510 GET A$:IF A$<> CHR$(13) THEN 510 520 END 997 : 998 REM BEGIN THE SHOW 999 : 1000 XIN=-2*(null) : REM MINIMUM VALUE FOR X 1010 XAX= 2*(null) : REM MAXIMUM VALUE FOR X 1020 YIN=-3.0 : REM MINIMUM VALUE FOR Y 1030 YAX= 3.0 : REM MAXIMUM VALUE FOR Y 1040 SX=160/(XAX-XIN) : REM SCALE IN X DIRECTION 1050 SY=200/(YAX-YIN) : REM SCALE IN Y DIRECTION 1060 DX= (XAX-XIN)/160 : REM SET INCREMENT FOR 160 POINT PLOT 1070 PF=2 : REM INITIALIZE PLOTTING FLAG 1080 REM PF=0 ... LAST POINT CALCULATED WAS PLOTTED O.K. 1090 REM PF=1 ... LAST POINT CALCULATED WAS OUT OF RANGE 1100 REM PF=2 ... LAST POINT CALCULATED WAS UNDEFINED 1110 X=XIN - DX : REM INITIALIZE X 1120 SYS HIRES,1,0,1,0,1 1130 SYS DMODE,1:SYS SELPC,1 1140 GOTO 200